flowchart TB
	%% 周期性负载均衡器 run_rebalance_domains
	run_rebalance_domains --> update_blocked_averages;
	run_rebalance_domains --> rebalance_domains;

	subgraph TriggerNOHZLB [触发 NOHZ Load Balance]
	direction TB
		%% KICK
		scheduler_tick --> trigger_load_balance --> nohz_balancer_kick;
		trigger_load_balance --> raise_softirq_SCHED_SOFTIRQ;
		nohz_balancer_kick --> SetNOHZ --> kick_ilb --> find_new_ilb --> KICK_CPU_BY_IPI -...-> nohz_csd_func -...-> raise_softirq_SCHED_SOFTIRQ;

		subgraph SetNOHZ [设置 NOHZ Load Balance 标记]
		direction TB
			set_NOHZ_STATS_KICK
			set_NOHZ_BALANCE_KICK
			set_NOHZ_NEXT_KICK
		end
	end

	subgraph DoNOHZLB [执行 NOHZ Load Balance]
	direction TB

		raise_softirq_SCHED_SOFTIRQ --> run_rebalance_domains;

		%% NOHZ 负载均衡器 nohz_idle_balance
		run_rebalance_domains --has NOHZ_BALANCE_KICK--> nohz_idle_balance;
		nohz_idle_balance --> clear_nohz_idle_balance;
		nohz_idle_balance --> _nohz_idle_balance;

		_nohz_idle_balance --> for_each_nohz_idle_cpus_mask;
		for_each_nohz_idle_cpus_mask --has NOHZ_STATS_KICK--> update_nohz_stats --> update_blocked_averages;
		for_each_nohz_idle_cpus_mask --has NOHZ_BALANCE_KICK --> rebalance_domains;
	end

	%% IDLE 负载均衡器
	newidle_balance --> nohz_newidle_balance;
	nohz_newidle_balance --> set_NOHZ_NEWILB_KICK